package com.sg.dto.biz.app.common;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


/**
 * @desc SpecExecCycleStageAnaDto
 * @使用场景
 */
@Data
public class SpecExecCycleStageAnaDto extends BaseDto implements Serializable {

    /**
     * 执行周期阶段ID
     */
    @ApiModelProperty("执行周期阶段ID")
    private String executeCycleStageId;

    /**
     * 周期ID
     */
    @ApiModelProperty("周期ID")
    private String cycleId;

    /**
     * 周期类型配置标识
     */
    @ApiModelProperty("周期类型配置标识")
    private String cycleTypeConfCode;

    /**
     * 周期类型标识
     */
    @ApiModelProperty("周期类型标识")
    private String cycleTypeCode;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 上一执行周期开始时间
     */
    @ApiModelProperty("上一执行周期开始时间")
    private Date lastExeCycleStartTime;

    /**
     * 上一执行周期结束时间
     */
    @ApiModelProperty("上一执行周期结束时间")
    private Date lastExeCycleEndTime;

    /**
     * 下一执行周期开始时间
     */
    @ApiModelProperty("下一执行周期开始时间")
    private Date nextExeCycleStartTime;

    /**
     * 下一执行周期结束时间
     */
    @ApiModelProperty("下一执行周期结束时间")
    private Date nextExeCycleEndTime;

    /**
     * 上一子周期被评对象目标周期ID
     */
    @ApiModelProperty("上一子周期被评对象目标周期ID")
    private String lastSubEvaObjTargetCycleId;

    /**
     * 上一子周期周期ID
     */
    @ApiModelProperty("上一子周期周期ID")
    private String lastSubCycleId;

    /**
     * 上一子周期周期开始时间
     */
    @ApiModelProperty("上一子周期周期开始时间")
    private Date lastSubCycleStartTime;

    /**
     * 上一子周期周期结束时间
     */
    @ApiModelProperty("上一子周期周期结束时间")
    private Date lastSubCycleEndTime;

    /**
     * 下一子周期被评对象目标周期ID
     */
    @ApiModelProperty("下一子周期被评对象目标周期ID")
    private String nextSubEvaObjTargetCycleId;

    /**
     * 下一子周期周期ID
     */
    @ApiModelProperty("下一子周期周期ID")
    private String nextSubCycleId;

    /**
     * 下一子周期周期开始时间
     */
    @ApiModelProperty("下一子周期周期开始时间")
    private Date nextSubCycleStartTime;

    /**
     * 下一子周期周期结束时间
     */
    @ApiModelProperty("下一子周期周期结束时间")
    private Date nextSubCycleEndTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        SpecExecCycleStageAnaDto that = (SpecExecCycleStageAnaDto) o;
        return executeCycleStageId == that.executeCycleStageId && cycleId == that.cycleId && cycleTypeConfCode == that.cycleTypeConfCode && cycleTypeCode == that.cycleTypeCode && orderNumber == that.orderNumber && lastExeCycleStartTime == that.lastExeCycleStartTime && lastExeCycleEndTime == that.lastExeCycleEndTime && nextExeCycleStartTime == that.nextExeCycleStartTime && nextExeCycleEndTime == that.nextExeCycleEndTime && lastSubEvaObjTargetCycleId == that.lastSubEvaObjTargetCycleId && lastSubCycleId == that.lastSubCycleId && lastSubCycleStartTime == that.lastSubCycleStartTime && lastSubCycleEndTime == that.lastSubCycleEndTime && nextSubEvaObjTargetCycleId == that.nextSubEvaObjTargetCycleId && nextSubCycleId == that.nextSubCycleId && nextSubCycleStartTime == that.nextSubCycleStartTime && nextSubCycleEndTime == that.nextSubCycleEndTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), executeCycleStageId, cycleId, cycleTypeConfCode, cycleTypeCode, orderNumber, lastExeCycleStartTime, lastExeCycleEndTime, nextExeCycleStartTime, nextExeCycleEndTime, lastSubEvaObjTargetCycleId, lastSubCycleId, lastSubCycleStartTime, lastSubCycleEndTime, nextSubEvaObjTargetCycleId, nextSubCycleId, nextSubCycleStartTime, nextSubCycleEndTime);
    }


}
   